from sqlalchemy import Column, Integer, String, Date, DateTime, Text, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class PatientInfo(Base):
    """
    病人信息模型类
    对应数据库表: patients
    """
    __tablename__ = 'patients'
    
    # 主键ID，自动递增
    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    
    # 病人唯一标识符
    patient_id = Column(String(50), unique=True, index=True, nullable=False)
    
    # 病人姓名
    name = Column(String(100), nullable=False)
    
    # 出生日期
    birth_date = Column(Date, nullable=True)
    
    # 性别 ('M': 男性, 'F': 女性, 'Other': 其他)
    gender = Column(String(10), nullable=True)
    
    # 联系电话
    phone = Column(String(20), nullable=True)
    
    # 地址信息
    address = Column(Text, nullable=True)
    
    # 创建者ID（关联用户表）
    created_by = Column(Integer, nullable=True)
    
    # 创建时间
    created_at = Column(DateTime, default=func.now(), nullable=True)
    
    # 更新时间
    updated_at = Column(DateTime, default=func.now(), onupdate=func.now(), nullable=True)
    
    def __repr__(self):
        return f"<PatientInfo(id={self.id}, patient_id='{self.patient_id}', name='{self.name}')>"